/*
 * main.c
 *
 *  Created on: 28 jan. 2013
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

/* pak een string waarvan we de encoding kennen */
char original[]  = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
char cipher[] = "cpospjzlthmzycztjvdrwjimjdtfnbgtswtndpxlqdcgdxnzhvanmqnhxjrfkxwaxrhtbpuhgkhbrdlzerqurlbnvjobaebvlxftylkolfvhpdivuyvpfrznsfeifzpbjx";

int main(int argc, char **argv) {
	if (argc > 1) {
		/* kopieer gedrag van de encoder :) */
		printf("%s takes no arguments. Encrypted text is read from stdin, decrypted and output to stdout.", argv[0]);
		return 0;
	}

	int c;
	size_t index;

	/* itereer zowel door de stdin als door de sleutel */
	for (index = 0; (c = fgetc(stdin)) != EOF; index = (index+1) % strlen(cipher)) {
		/* converteer alleen als een karakter in het alfabet zit */
		if (isalpha(c)) {
			/* pak de lowercase-variant en pas de verschuiving in het alfabet achterstevoren toe */
			c = tolower(c) - (int)(cipher[index]-original[index]);

			/* door de vorige berekening kan de letter buiten bereik vallen
			 * schuif 'm in dat geval weer op.
			 */
			if (c < 'a')
				c += 26;
			if (c > 'z')
				c -= 26;
		}
		/* print het karakter */
		printf("%c", (char)c);
	}
	printf("\n");
	return 0;
}
